#ifndef SF_IMAGE_
#define SF_IMAGE_

#pragma once
#include "SFConfig.h"

#define IMG_OK              0x1
#define IMG_ERR_NO_FILE     0x2
#define IMG_ERR_MEM_FAIL    0x4
#define IMG_ERR_BAD_FORMAT  0x8
#define IMG_ERR_UNSUPPORTED 0x40

struct SFImageInfo
{
	int m_iWidth, m_iHeight;
	bool m_bProcedure;

	SFImageInfo(void)
	{
		m_iWidth = m_iHeight = 0;
		m_bProcedure = false;
	}

	SFImageInfo(int w, int h, bool bProcedure)
	{
		m_iWidth = w;
		m_iHeight = h;
		m_bProcedure = bProcedure;
	}
};

class IImage
{
public:
	IImage(void) {}
	virtual ~IImage(void) {}
	virtual int Load(const char *szFileName) = 0;
	virtual int GetBPP(void) = 0;
	virtual int GetWidth(void) = 0;
	virtual int GetHeight(void) = 0;
	virtual unsigned char *GetImg(void) = 0;
	virtual bool DownSampling(void) = 0;
	virtual unsigned char* GetPalette(void) = 0;	

protected:
};


#endif // SF_IMAGE_